/**
 * 控制模块，主要用来处理各种复杂功能的模块
 * 1、可以引入工具插件，专门处理某种逻辑功能的方法
 * 2、将处理的结果依次返回回去
 */

'use strict'
//导包
const fs = require('fs')
const path = require('path')
const captchapng = require('captchapng')

//导入处理数据库的js文件
const databasemanager = require(path.join(__dirname,'../tools/databasemanager.js'))

//从服务器的数据库中中读取文件
//1.登录页面的数据
exports.getLoginPage = (req, res) => {
    fs.readFile(path.join(__dirname, '../views/login.html'), (err, data) => {
        res.setHeader("Content-Type", "text/html;charset=utf-8")
        res.end(data)
    })
}

//2.读取验证码图片
exports.getVcodeImage = (req, res) => {
    //保存验证码
    var vcode = parseInt(Math.random() * 9000 + 1000)
    //将验证码存储到专属的内容空间
    req.session.vcodeId = vcode
    //todo vcode 要在服务端存储起来
    var p = new captchapng(80, 30, vcode); // width,height,numeric captcha 
    p.color(0, 0, 0, 0); // First color: background (red, green, blue, alpha) 
    p.color(80, 80, 80, 255); // Second color: paint (red, green, blue, alpha) 

    var img = p.getBase64();
    var imgbase64 = new Buffer(img, 'base64');
    res.writeHead(200, {
        'Content-Type': 'image/png'
    })
    res.end(imgbase64)
}

//返回校核登录信息的正确性,需要从数据库中获取用户数据，进行校核
exports.login = (req, res) => {
    //1、获取post传递过来的参数（body-parser插件）
    const params = req.body
    console.log(params)
    let result = {
        status: 1,
        message: '登录成功'
    }
    //2、校核验证码
    if (parseInt(params.vcodeId) != req.session.vcodeId) {
        result.status = 0
        result.message = '验证码错误'

        // res.json(result)  也可以使用res.json()
        res.end(JSON.stringify(result))
        //先校核验证码，如果验证码不对，就不执行下面的代码
        return
    }

    //3、涉及到数据库，所有新建一个处理数据库操作的js工具tools
    //传入用户信息的合集account,以及登录的数据
    databasemanager.findOne('account', {
        username:params.username,
        password:params.password
    }, (err, doc)=>{
        console.log(doc)
        if(doc == null){
            result.status = 2
            result.message = '用户名或密码错误'
        }else{
            //返回结果JOSN字符串
            res.end(JSON.stringify(result))
        }
    })

}